package org.niux.AutoLoginQQ.util;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.niux.AutoLoginQQ.VO.QQNumVO;
import org.niux.AutoLoginQQ.common.Constant;

public class ReadQQList {

	private Log log = LogFactory.getLog(this.getClass());
	
	/**
	 * 
	 * 方法概述：读取QQ列表
	 * 描述：读取QQ列表
	 * @param path
	 * @return
	 * 返回类型：List<QQNumVO>
	 * 修改人：梁铭显
	 * 修改时间：2012-9-14
	 */
	public List<QQNumVO> getQQList(String path){
		List<QQNumVO> qqList = new ArrayList<QQNumVO>();
		
		File file = new File(path);
		
		BufferedReader reader = null;
		
		try {
			reader = new BufferedReader(new FileReader(file));
			
			String tempString;
			
			int i = 0;
			while((tempString = reader.readLine()) != null) {
				if(tempString.equals("")){
					continue;
				} else if(!tempString.contains(Constant.SPLIT_STR)){
					continue;
				}
				
				QQNumVO qq = new QQNumVO();
				
				qq.setQqNum(tempString.split(Constant.SPLIT_STR)[0].replace(" ", ""));
				qq.setPassword(tempString.split(Constant.SPLIT_STR)[1].replace(" ", ""));
				qq.setLogin(false);
				qq.setIndex(i);
				qq.setLoginTime(0);

				qqList.add(qq);
				i++;
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		return qqList;
	}
	
	/**
	 * 
	 * 方法概述：读取QQ列表
	 * 描述：读取QQ列表
	 * @param path
	 * @return
	 * 返回类型：List<QQNumVO>
	 * 修改人：梁铭显
	 * 修改时间：2012-9-14
	 */
	public List<QQNumVO> getQQRecord(String path){
		List<QQNumVO> qqList = new ArrayList<QQNumVO>();
		
		File file = new File(path);
		
		BufferedReader reader = null;
		
		try {
			reader = new BufferedReader(new FileReader(file));
			
			String tempString;
			
			int i = 0;
			while((tempString = reader.readLine()) != null) {
				if(tempString.equals("")){
					continue;
				} else if(!tempString.contains(Constant.SPLIT_STR)){
					continue;
				}
				
				QQNumVO qq = new QQNumVO();
				
				String[] qqInfo = tempString.split(Constant.SPLIT_STR);
				
				log.debug(tempString);
				
				if(qqInfo.length == 2){
					qq.setQqNum(tempString.split(Constant.SPLIT_STR)[0].replace(" ", ""));
					qq.setPassword(tempString.split(Constant.SPLIT_STR)[1].replace(" ", ""));
					qq.setLogin(false);
					qq.setIndex(i);
				} else {
					qq.setQqNum(tempString.split(Constant.SPLIT_STR)[0].trim());
					qq.setPassword(tempString.split(Constant.SPLIT_STR)[1].trim());
					qq.setNick(tempString.split(Constant.SPLIT_STR)[2].trim().equals("null") ? null : tempString.split(Constant.SPLIT_STR)[2].trim());
					qq.setLevel(tempString.split(Constant.SPLIT_STR)[3].trim().equals("null") ? null : tempString.split(Constant.SPLIT_STR)[3].trim());
					qq.setOnlineDate(tempString.split(Constant.SPLIT_STR)[4].trim().equals("null") ? null : tempString.split(Constant.SPLIT_STR)[4].trim());
					qq.setRemainDate(tempString.split(Constant.SPLIT_STR)[5].trim().equals("null") ? null : tempString.split(Constant.SPLIT_STR)[5].trim());
					qq.setAlreadyLogin(tempString.split(Constant.SPLIT_STR)[6].trim().equals("null") ? null : Long.parseLong(tempString.split(Constant.SPLIT_STR)[6].trim()));
					qq.setLoginDate(tempString.split(Constant.SPLIT_STR)[7].trim().equals("null") ? null : tempString.split(Constant.SPLIT_STR)[7].trim());
					
					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
					String currentDate = sdf.format(new Date());
					
					if(qq.getLoginDate() != null && !qq.getLoginDate().equals(currentDate)){
						qq.setAlreadyLogin((long)0);
						qq.setLoginDate(currentDate);
					}
					
					qq.setLogin(false);
					qq.setIndex(i);
					qq.setLoginTime(0);
				}

				qqList.add(qq);
				i++;
			}
		} catch (Exception e1) {
			e1.printStackTrace();
		}
		
		return qqList;
	}
	
	/**
	 * 
	 * 方法概述：写入QQ列表数据
	 * 描述：写入QQ列表数据
	 * @param file
	 * @param data
	 * 返回类型：void
	 * 修改人：梁铭显
	 * 修改时间：2012-9-14
	 */
	public void writeQQList(File file,List<QQNumVO> qqList){
		StringBuffer sb = new StringBuffer();
		
		for (QQNumVO qq : qqList) {
			sb.append(qq.getQqNum() + Constant.SPLIT_STR + qq.getPassword() + 
					Constant.SPLIT_STR + qq.getNick() + Constant.SPLIT_STR + qq.getLevel() + 
					Constant.SPLIT_STR + qq.getOnlineDate() + Constant.SPLIT_STR + qq.getRemainDate() + 
					Constant.SPLIT_STR + qq.getAlreadyLogin() + Constant.SPLIT_STR + qq.getLoginDate() + "\r\n");
		}
		
		try {
			BufferedWriter bw = new BufferedWriter(new FileWriter(file));
			bw.write(sb.toString());
			bw.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
